package com.longge;

/**
 * @创建人 xinglongge
 * @创建时间 2021/8/25
 * @描述
 */
public class LengthLongestPath {

    public int lengthLongestPath(String input) {
        if (input == null || input.length() == 0) return 0;
        String[] words = input.split("\n");
        int[] pathLens = new int[words.length + 1];//pathLens[i]存放地i层次的最后面的元素的路径长度
        int ans = 0;
        //自左向右遍历
        for (String word : words) {
            int level = word.lastIndexOf('\t') + 1;//层次计算
            int nameLen = word.length() - level;//计算名字长度
            if (level == 0) {
                pathLens[0] = nameLen;
                if (word.contains(".")) ans = nameLen;
                continue;
            }
            //word的父文件夹必定目前是level层次的最后一个，因此pathLens[level-1]就是父文件夹路径长度
            //这个word必然是目前本层次的最后一个，因此需要刷新pathLens[level],+1是因为要加一个'/'
            pathLens[level] = pathLens[level - 1] + 1 + nameLen;
            //如果是文件，还需要用路径长度刷新ans
            if (word.contains(".")) ans = Math.max(ans, pathLens[level]);
        }
        return ans;
    }


    public static void main(String[] args) {
        String str = "dir\n\tsubdir1\n\tsubdir2\n\t\tfile.ext";
        LengthLongestPath lengthLongestPath = new LengthLongestPath();
        int i = lengthLongestPath.lengthLongestPath(str);
        System.out.println(i);
    }
}
